/*
    日志宏实现：提供三种日志等级的宏函数
*/

#pragma once
#include <iostream>
#include <ctime>

// 三种日志等级
#define DBG 0 
#define INF 1
#define ERR 2

// 默认日志等级
#define DEFAULT_LEVEL DBG

// 日志宏函数
#define LOG(level, format, ...) do{\
    if(level < DEFAULT_LEVEL) break;\
    time_t t = time(nullptr);\
    struct tm* ptm = localtime(&t);\
    char time_str[32] = {0};\
    strftime(time_str, 32, "%H:%M:%S", ptm);\
    printf("[%s][%s][%s:%d] " format, #level, time_str, __FILE__, __LINE__, ##__VA_ARGS__);\
}while(0)

// 三种日志等级的宏函数
#define DBG_LOG(format, ...) LOG(DBG, format, ##__VA_ARGS__)
#define INF_LOG(format, ...) LOG(INF, format, ##__VA_ARGS__)
#define ERR_LOG(format, ...) LOG(ERR, format, ##__VA_ARGS__)


